home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 43 / Amiga Format CD43 (1999)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1999-09].iso / -serious- / comms / other / amivnc / utils / stopamivnc / stopamivnc.c < prev    next >
C/C++ Source or Header  |  1999-06-14  |  2KB  |  78 lines

  1. // StopAmiVNC - A tool to stop AmiVNC (Amiga experimental VNC server)
  2.  
  3. // Includes ***********************************************
  4. // Needed to compile : SDK AmiTCP 4.3
  5. #include <exec/types.h>
  6. #include <exec/memory.h>
  7. #include <devices/input.h>
  8. #include <devices/inputevent.h>
  9. #include <libraries/commodities.h>
  10. #include <proto/all.h>
  11. #include <proto/socket.h>
  12. #include <sys/socket.h>
  13. #include <sys/ioctl.h>
  14. #include <netinet/in.h>
  15. #include <netdb.h>
  16. #include <stdio.h>
  17. #include <stdlib.h>
  18. #include <string.h>
  19.  
  20. #include <fcntl.h>
  21. #include <ctype.h>
  22.  
  23. // Specific Inculdes ***********************************************
  24. #include "rfbproto.h"                   // Structures & constants for VNC protocol
  25.  
  26. // Constants ***********************************************
  27. #define XDC_PORT 5900                   // Port # for bind()
  28. #define FALSE 0
  29. #define TRUE 1
  30. #undef PARANO
  31.  
  32. // Common messages
  33. char XDC_ID[] = "StopAmiVNC 0.0.1 May 28 1999";
  34. char XDC_SEND[] = "main.c / main : send() error";
  35. char XDC_RECV[] = "main.c / main : recv() error";
  36.  
  37. // Global variables ***********************************************
  38. LONG iMasterSocket = NULL;
  39.  
  40. // Exit
  41. void vCleanExit(char *cMsg, long lCode)
  42. {
  43.     if (iMasterSocket) CloseSocket(iMasterSocket);
  44.     
  45.     printf("StopAmiVNC - %s (%ld)\n", cMsg, lCode);
  46. }
  47.  
  48. // Main entry point  ***********************************************
  49. int main(int argc, char **argv)
  50. {
  51.     struct sockaddr_in sAddr;                  // Local address for bind()
  52.     rfbProtocolVersionMsg mProtVerMsg;
  53.     int iPort = XDC_PORT;
  54.  
  55.     // Prepare listener socket
  56.     if (-1 == (iMasterSocket = socket(AF_INET, SOCK_STREAM, 0)))
  57.         vCleanExit("main.c / main : socket() error", Errno());
  58.     
  59.     // Connect to server
  60.     sAddr.sin_family = AF_INET;
  61.     sAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
  62.     sAddr.sin_port = htons(iPort);
  63.  
  64.     if (-1 == connect(iMasterSocket, (struct sockaddr *) &sAddr, sizeof(sAddr)))
  65.         vCleanExit("main.c / main : connect() error", Errno());
  66.     
  67.     // NegociateProtocolVersion, sending 0/0 as version to force server to exit
  68.     if (-1 == (recv(iMasterSocket, mProtVerMsg, sz_rfbProtocolVersionMsg, 0)))
  69.         vCleanExit(XDC_RECV, Errno());
  70.  
  71.     sprintf((char *) mProtVerMsg, rfbProtocolVersionFormat, 0, 0);
  72.  
  73.     if (-1 == (send(iMasterSocket, (UBYTE *) mProtVerMsg, sz_rfbProtocolVersionMsg, 0)))
  74.         vCleanExit(XDC_SEND, Errno());
  75.     
  76.     vCleanExit("StopAmiVNC : asked server to stop", 0);
  77. }
  78.